Outside of an MH-Folder buffer, you must call either M-x mh-smail or M-x mh-smail-other-window to compose a new message. The former command always creates a two-window layout with the current buffer on top and the draft on the bottom. Use the latter command if you would rather preserve the window layout. You may find adding the following key bindings to ~/.emacs useful:
(global-set-key "\C-xm" 'mh-smail)
(global-set-key "\C-x4m" 'mh-smail-other-window)
From within a MH-Folder
buffer, you can simply use the command m
(mh-send). However you invoke mh-send,
your letter appears in an Emacs buffer whose mode is MH-Letter
(to see what the buffer looks like, see Sending Mail
Tour). MH-Letter mode allows you to edit your message, to
check the validity of the recipients, to insert attachments and
other messages into your message, and to send the message. We'll
go more into depth about editing a draft1
(a message you're composing) in just a moment (see Editing Drafts).
If you
prefer to be prompted for the recipient and subject fields before
the MH-Letter buffer appears, turn on the option
mh-compose-prompt-flag.
MH-E
adds an ‘X-Mailer:’ header field to the header
that includes the version of MH-E and Emacs that you are using.
If you don't want to participate in our marketing, you can turn
off the option mh-insert-x-mailer-flag.
Two hooks are provided
to run commands on your freshly created draft. The first hook,
mh-letter-mode-hook, allows you to do some
processing before editing a letter2. For example, you may
wish to modify the header after repl has done its work, or you may have a
complicated components
file and need to tell MH-E where the cursor should go. Here's an
example of how you would use this hook.
(defvar letter-mode-init-done-flag nil
"Non-nil means one-time MH-E settings have been made.")
(defun my-mh-letter-mode-hook ()
"Prepare letter for editing."
(when (not letter-mode-init-done) ; only need to bind the keys once
(local-set-key "\C-ctb" 'add-enriched-text)
(local-set-key "\C-cti" 'add-enriched-text)
(local-set-key "\C-ctf" 'add-enriched-text)
(local-set-key "\C-cts" 'add-enriched-text)
(local-set-key "\C-ctB" 'add-enriched-text)
(local-set-key "\C-ctu" 'add-enriched-text)
(local-set-key "\C-ctc" 'add-enriched-text)
(setq letter-mode-init-done t))
(save-excursion
(goto-char (point-max)) ; go to end of message to
(mh-insert-signature))) ; insert signature
Prepare draft for editing via mh-letter-mode-hook
The function, add-enriched-text is defined in the
example in Adding
Attachments.
The second
hook, a function really, is
mh-compose-letter-function. Like
mh-letter-mode-hook, it is called just before
editing a new message; however, it is the last function called
before you edit your message. The consequence of this is that you
can write a function to write and send the message for you. This
function is passed three arguments: the contents of the
‘To:’,
‘Subject:’,
and ‘Cc:’
header fields.
[1] I highly recommend that you use a
draft folder so that you can edit several drafts in
parallel. To do so, create a folder named
‘+drafts’
for example, and add the profile component
‘Draft-Folder:
drafts’ (see
mh-profile(5)).
[2] Actually, because MH-Letter mode inherits
from Mail mode, the hooks text-mode-hook and
mail-mode-hook are run (in that order) before
mh-letter-mode-hook.